﻿#ifndef UIPLUGIN_H
#define UIPLUGIN_H

#include "../utkcore_global.h"

#include <QObject>

class PluginManager;
class UTKCORE_EXPORT UIPlugin : public QObject
{
    Q_OBJECT

public:
    explicit UIPlugin(QObject *parent = nullptr) {}
    virtual ~UIPlugin() {}

    virtual int type() const = 0;

    virtual QString name() const = 0;

    virtual void initializationFinished() = 0;

    virtual QObject* createObject(const QString &name = QString(), QObject* parent = nullptr) = 0;
};

#define interface_iid "org.pluginqt.custompluginuse.utk.utkplugin1.0.0"
Q_DECLARE_INTERFACE(UIPlugin, interface_iid)

#endif // UIPLUGIN_H
